package com.woniu.teachmall.controller;

import com.woniu.teachmall.dto.CarItem;
import com.woniu.teachmall.entity.User;
import com.woniu.teachmall.service.ShopcarService;
import jakarta.servlet.http.HttpSession;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestParam;

import java.util.List;

@Controller
public class CarController {

    // 注入购物车服务，处理购物车相关操作
    @Autowired
    private ShopcarService shopcarService;

    /**
     * 显示购物车页面
     * @param session 当前会话
     * @param model Spring MVC模型，用于传递数据到视图
     * @return 购物车页面或登录页面
     */
    @GetMapping("/car")
    public String car(HttpSession session, Model model){
        // 从会话中获取当前登录的用户对象
        User user = (User) session.getAttribute("loginUser");

        // 如果用户未登录，则跳转到登录页面
        if (user == null) {
            return "login";
        } else {
            // 获取当前用户的购物车数据
            List<CarItem> caritems = shopcarService.getCar(user.getId());
            System.out.println(caritems); // 用于调试输出购物车内容
            // 获取购物车中所有商品的总价
            Double totalPrice = shopcarService.getTotalPrice(user.getId());

            // 将购物车商品和总价信息传递到视图
            model.addAttribute("car", caritems);
            model.addAttribute("totalPrice", totalPrice);
        }
        // 返回购物车页面视图
        return "cart";
    }

    /**
     * 添加商品到购物车
     * @param goodid 商品ID
     * @param num 添加的商品数量
     * @param session 当前会话
     * @param carItem 购物车项（商品及数量）
     * @return 返回操作结果
     */
    @PostMapping("/car/add")
    public ResponseEntity<String> addCar(@RequestParam int goodid, int num, HttpSession session, CarItem carItem){
        // 从会话中获取当前登录的用户对象
        User user = (User) session.getAttribute("loginUser");
        System.out.println(user); // 用于调试输出当前用户信息

        // 获取用户ID
        int userid = user.getId();

        // 如果用户已经登录
        if (user != null) {
            // 调用服务层添加商品到购物车
            boolean re = shopcarService.addCar(userid, goodid, num);

            // 根据添加结果返回响应信息
            if (re) {
                return ResponseEntity.ok().body("success"); // 添加成功
            }
        }

        // 添加失败，返回失败信息
        return ResponseEntity.ok().body("fail");
    }
}
